# RUN: llc -mtriple aarch64 -passes="print" %s -filetype=null 2>&1 | FileCheck %s # CHECK-LABEL: name: @srem_pow2 # CHECK-NEXT: %0:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %1:_ KnownBits:00000000000000000000000000001000 SignBits:28 # CHECK-NEXT: %2:_ KnownBits:???????????????????????????????? SignBits:1 --- name: srem_pow2 body: | bb.1: liveins: $w0 %0:_(s32) = COPY $w0 %1:_(s32) = G_CONSTANT i32 8 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @srem_non_pow2 # CHECK-NEXT: %0:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %1:_ KnownBits:00000000000000000000000000001010 SignBits:28 # CHECK-NEXT: %2:_ KnownBits:???????????????????????????????? SignBits:1 --- name: srem_non_pow2 body: | bb.1: liveins: $w0 %0:_(s32) = COPY $w0 %1:_(s32) = G_CONSTANT i32 10 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @srem # CHECK-NEXT: %0:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %1:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %2:_ KnownBits:???????????????????????????????? SignBits:1 --- name: srem body: | bb.1: liveins: $w0, $w1 %0:_(s32) = COPY $w0 %1:_(s32) = COPY $w1 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @srem_implicit_def # CHECK-NEXT: %0:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %1:_ KnownBits:00000000000000000000000000001000 SignBits:28 # CHECK-NEXT: %2:_ KnownBits:???????????????????????????????? SignBits:1 --- name: srem_implicit_def body: | bb.1: liveins: $w0 %0:_(s32) = G_IMPLICIT_DEF %1:_(s32) = G_CONSTANT i32 8 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @srem_both_implicit_def # CHECK-NEXT: %0:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %1:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %2:_ KnownBits:???????????????????????????????? SignBits:1 --- name: srem_both_implicit_def body: | bb.1: %0:_(s32) = G_IMPLICIT_DEF %1:_(s32) = G_IMPLICIT_DEF %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @srem_const_const # CHECK-NEXT: %0:_ KnownBits:00000000000000000000000000001010 SignBits:28 # CHECK-NEXT: %1:_ KnownBits:00000000000000000000000000000011 SignBits:30 # CHECK-NEXT: %2:_ KnownBits:000000000000000000000000000000?? SignBits:28 --- name: srem_const_const body: | bb.1: %0:_(s32) = G_CONSTANT i32 10 %1:_(s32) = G_CONSTANT i32 3 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @numsignbits_srem # CHECK-NEXT: %0:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %1:_ KnownBits:00000000000000000000000000001000 SignBits:28 # CHECK-NEXT: %2:_ KnownBits:???????????????????????????????? SignBits:1 --- name: numsignbits_srem body: | bb.1: liveins: $w0 %0:_(s32) = COPY $w0 %1:_(s32) = G_CONSTANT i32 8 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @numsignbits_srem_negative # CHECK-NEXT: %0:_ KnownBits:???????????????????????????????? SignBits:1 # CHECK-NEXT: %1:_ KnownBits:11111111111111111111111111111000 SignBits:29 # CHECK-NEXT: %2:_ KnownBits:???????????????????????????????? SignBits:1 --- name: numsignbits_srem_negative body: | bb.1: liveins: $w0 %0:_(s32) = COPY $w0 %1:_(s32) = G_CONSTANT i32 -8 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ... # CHECK-LABEL: name: @numsignbits_srem_const_const # CHECK-NEXT: %0:_ KnownBits:00000000000000000000000000001010 SignBits:28 # CHECK-NEXT: %1:_ KnownBits:00000000000000000000000000000011 SignBits:30 # CHECK-NEXT: %2:_ KnownBits:000000000000000000000000000000?? SignBits:28 --- name: numsignbits_srem_const_const body: | bb.1: %0:_(s32) = G_CONSTANT i32 10 %1:_(s32) = G_CONSTANT i32 3 %2:_(s32) = G_SREM %0, %1 $w0 = COPY %2(s32) RET_ReallyLR implicit $w0 ...