Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/RISCV/atomic-signext.ll
Show First 20 Lines • Show All 622 Lines • ▼ Show 20 Lines | |||||
; RV32IA-NEXT: andi a6, a0, -4 | ; RV32IA-NEXT: andi a6, a0, -4 | ||||
; RV32IA-NEXT: slli a0, a0, 3 | ; RV32IA-NEXT: slli a0, a0, 3 | ||||
; RV32IA-NEXT: andi a3, a0, 24 | ; RV32IA-NEXT: andi a3, a0, 24 | ||||
; RV32IA-NEXT: addi a4, zero, 255 | ; RV32IA-NEXT: addi a4, zero, 255 | ||||
; RV32IA-NEXT: sll a7, a4, a0 | ; RV32IA-NEXT: sll a7, a4, a0 | ||||
; RV32IA-NEXT: slli a1, a1, 24 | ; RV32IA-NEXT: slli a1, a1, 24 | ||||
; RV32IA-NEXT: srai a1, a1, 24 | ; RV32IA-NEXT: srai a1, a1, 24 | ||||
; RV32IA-NEXT: sll a1, a1, a0 | ; RV32IA-NEXT: sll a1, a1, a0 | ||||
; RV32IA-NEXT: addi a5, zero, 24 | ; RV32IA-NEXT: sub a3, a4, a3 | ||||
; RV32IA-NEXT: sub a3, a5, a3 | ; RV32IA-NEXT: addi a3, a3, -231 | ||||
; RV32IA-NEXT: .LBB10_1: # =>This Inner Loop Header: Depth=1 | ; RV32IA-NEXT: .LBB10_1: # =>This Inner Loop Header: Depth=1 | ||||
; RV32IA-NEXT: lr.w a5, (a6) | ; RV32IA-NEXT: lr.w a4, (a6) | ||||
; RV32IA-NEXT: and a4, a5, a7 | ; RV32IA-NEXT: and a5, a4, a7 | ||||
; RV32IA-NEXT: mv a2, a5 | ; RV32IA-NEXT: mv a2, a4 | ||||
; RV32IA-NEXT: sll a4, a4, a3 | ; RV32IA-NEXT: sll a5, a5, a3 | ||||
; RV32IA-NEXT: sra a4, a4, a3 | ; RV32IA-NEXT: sra a5, a5, a3 | ||||
; RV32IA-NEXT: bge a4, a1, .LBB10_3 | ; RV32IA-NEXT: bge a5, a1, .LBB10_3 | ||||
; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB10_1 Depth=1 | ; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB10_1 Depth=1 | ||||
; RV32IA-NEXT: xor a2, a5, a1 | ; RV32IA-NEXT: xor a2, a4, a1 | ||||
; RV32IA-NEXT: and a2, a2, a7 | ; RV32IA-NEXT: and a2, a2, a7 | ||||
; RV32IA-NEXT: xor a2, a5, a2 | ; RV32IA-NEXT: xor a2, a4, a2 | ||||
; RV32IA-NEXT: .LBB10_3: # in Loop: Header=BB10_1 Depth=1 | ; RV32IA-NEXT: .LBB10_3: # in Loop: Header=BB10_1 Depth=1 | ||||
; RV32IA-NEXT: sc.w a2, a2, (a6) | ; RV32IA-NEXT: sc.w a2, a2, (a6) | ||||
; RV32IA-NEXT: bnez a2, .LBB10_1 | ; RV32IA-NEXT: bnez a2, .LBB10_1 | ||||
; RV32IA-NEXT: # %bb.4: | ; RV32IA-NEXT: # %bb.4: | ||||
; RV32IA-NEXT: srl a0, a5, a0 | ; RV32IA-NEXT: srl a0, a4, a0 | ||||
; RV32IA-NEXT: slli a0, a0, 24 | ; RV32IA-NEXT: slli a0, a0, 24 | ||||
; RV32IA-NEXT: srai a0, a0, 24 | ; RV32IA-NEXT: srai a0, a0, 24 | ||||
; RV32IA-NEXT: ret | ; RV32IA-NEXT: ret | ||||
; | ; | ||||
; RV64I-LABEL: atomicrmw_max_i8_monotonic: | ; RV64I-LABEL: atomicrmw_max_i8_monotonic: | ||||
; RV64I: # %bb.0: | ; RV64I: # %bb.0: | ||||
; RV64I-NEXT: addi sp, sp, -48 | ; RV64I-NEXT: addi sp, sp, -48 | ||||
; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill | ; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill | ||||
▲ Show 20 Lines • Show All 120 Lines • ▼ Show 20 Lines | |||||
; RV32IA-NEXT: andi a6, a0, -4 | ; RV32IA-NEXT: andi a6, a0, -4 | ||||
; RV32IA-NEXT: slli a0, a0, 3 | ; RV32IA-NEXT: slli a0, a0, 3 | ||||
; RV32IA-NEXT: andi a3, a0, 24 | ; RV32IA-NEXT: andi a3, a0, 24 | ||||
; RV32IA-NEXT: addi a4, zero, 255 | ; RV32IA-NEXT: addi a4, zero, 255 | ||||
; RV32IA-NEXT: sll a7, a4, a0 | ; RV32IA-NEXT: sll a7, a4, a0 | ||||
; RV32IA-NEXT: slli a1, a1, 24 | ; RV32IA-NEXT: slli a1, a1, 24 | ||||
; RV32IA-NEXT: srai a1, a1, 24 | ; RV32IA-NEXT: srai a1, a1, 24 | ||||
; RV32IA-NEXT: sll a1, a1, a0 | ; RV32IA-NEXT: sll a1, a1, a0 | ||||
; RV32IA-NEXT: addi a5, zero, 24 | ; RV32IA-NEXT: sub a3, a4, a3 | ||||
; RV32IA-NEXT: sub a3, a5, a3 | ; RV32IA-NEXT: addi a3, a3, -231 | ||||
; RV32IA-NEXT: .LBB11_1: # =>This Inner Loop Header: Depth=1 | ; RV32IA-NEXT: .LBB11_1: # =>This Inner Loop Header: Depth=1 | ||||
; RV32IA-NEXT: lr.w a5, (a6) | ; RV32IA-NEXT: lr.w a4, (a6) | ||||
; RV32IA-NEXT: and a4, a5, a7 | ; RV32IA-NEXT: and a5, a4, a7 | ||||
; RV32IA-NEXT: mv a2, a5 | ; RV32IA-NEXT: mv a2, a4 | ||||
; RV32IA-NEXT: sll a4, a4, a3 | ; RV32IA-NEXT: sll a5, a5, a3 | ||||
; RV32IA-NEXT: sra a4, a4, a3 | ; RV32IA-NEXT: sra a5, a5, a3 | ||||
; RV32IA-NEXT: bge a1, a4, .LBB11_3 | ; RV32IA-NEXT: bge a1, a5, .LBB11_3 | ||||
; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB11_1 Depth=1 | ; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB11_1 Depth=1 | ||||
; RV32IA-NEXT: xor a2, a5, a1 | ; RV32IA-NEXT: xor a2, a4, a1 | ||||
; RV32IA-NEXT: and a2, a2, a7 | ; RV32IA-NEXT: and a2, a2, a7 | ||||
; RV32IA-NEXT: xor a2, a5, a2 | ; RV32IA-NEXT: xor a2, a4, a2 | ||||
; RV32IA-NEXT: .LBB11_3: # in Loop: Header=BB11_1 Depth=1 | ; RV32IA-NEXT: .LBB11_3: # in Loop: Header=BB11_1 Depth=1 | ||||
; RV32IA-NEXT: sc.w a2, a2, (a6) | ; RV32IA-NEXT: sc.w a2, a2, (a6) | ||||
; RV32IA-NEXT: bnez a2, .LBB11_1 | ; RV32IA-NEXT: bnez a2, .LBB11_1 | ||||
; RV32IA-NEXT: # %bb.4: | ; RV32IA-NEXT: # %bb.4: | ||||
; RV32IA-NEXT: srl a0, a5, a0 | ; RV32IA-NEXT: srl a0, a4, a0 | ||||
; RV32IA-NEXT: slli a0, a0, 24 | ; RV32IA-NEXT: slli a0, a0, 24 | ||||
; RV32IA-NEXT: srai a0, a0, 24 | ; RV32IA-NEXT: srai a0, a0, 24 | ||||
; RV32IA-NEXT: ret | ; RV32IA-NEXT: ret | ||||
; | ; | ||||
; RV64I-LABEL: atomicrmw_min_i8_monotonic: | ; RV64I-LABEL: atomicrmw_min_i8_monotonic: | ||||
; RV64I: # %bb.0: | ; RV64I: # %bb.0: | ||||
; RV64I-NEXT: addi sp, sp, -48 | ; RV64I-NEXT: addi sp, sp, -48 | ||||
; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill | ; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill | ||||
▲ Show 20 Lines • Show All 2,947 Lines • Show Last 20 Lines |