diff options
Diffstat (limited to 'test/CodeGen/AArch64/fp16-v4-instructions.ll')
-rw-r--r-- | test/CodeGen/AArch64/fp16-v4-instructions.ll | 133 |
1 files changed, 67 insertions, 66 deletions
diff --git a/test/CodeGen/AArch64/fp16-v4-instructions.ll b/test/CodeGen/AArch64/fp16-v4-instructions.ll index b892f1902b03..b39ff08db39a 100644 --- a/test/CodeGen/AArch64/fp16-v4-instructions.ll +++ b/test/CodeGen/AArch64/fp16-v4-instructions.ll @@ -15,7 +15,7 @@ entry: define <4 x half> @build_h4(<4 x half> %a) { entry: ; CHECK-LABEL: build_h4: -; CHECK: movz [[GPR:w[0-9]+]], #0x3ccd +; CHECK: mov [[GPR:w[0-9]+]], #15565 ; CHECK: dup v0.4h, [[GPR]] ret <4 x half> <half 0xH3CCD, half 0xH3CCD, half 0xH3CCD, half 0xH3CCD> } @@ -176,7 +176,7 @@ define <4 x half> @sitofp_i64(<4 x i64> %a) #0 { define <4 x half> @uitofp_i8(<4 x i8> %a) #0 { ; CHECK-LABEL: uitofp_i8: -; CHECK-NEXT: bic v0.4h, #0xff, lsl #8 +; CHECK-NEXT: bic v0.4h, #255, lsl #8 ; CHECK-NEXT: ushll [[OP1:v[0-9]+\.4s]], v0.4h, #0 ; CHECK-NEXT: ucvtf [[OP2:v[0-9]+\.4s]], [[OP1]] ; CHECK-NEXT: fcvtn v0.4h, [[OP2]] @@ -277,10 +277,10 @@ define <4 x i16> @fptoui_i16(<4 x half> %a) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, ne -; CHECK-DAG: csel {{.*}}, wzr, ne -; CHECK-DAG: csel {{.*}}, wzr, ne -; CHECK-DAG: csel {{.*}}, wzr, ne +; CHECK-DAG: csetm {{.*}}, ne +; CHECK-DAG: csetm {{.*}}, ne +; CHECK-DAG: csetm {{.*}}, ne +; CHECK-DAG: csetm {{.*}}, ne define <4 x i1> @test_fcmp_une(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp une <4 x half> %a, %b ret <4 x i1> %1 @@ -296,14 +296,14 @@ define <4 x i1> @test_fcmp_une(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, eq -; CHECK-DAG: csel {{.*}}, wzr, eq -; CHECK-DAG: csel {{.*}}, wzr, eq -; CHECK-DAG: csel {{.*}}, wzr, eq -; CHECK-DAG: csel {{.*}}, vs -; CHECK-DAG: csel {{.*}}, vs -; CHECK-DAG: csel {{.*}}, vs -; CHECK-DAG: csel {{.*}}, vs +; CHECK-DAG: csetm [[REG1:w[0-9]+]], eq +; CHECK-DAG: csetm [[REG2:w[0-9]+]], eq +; CHECK-DAG: csetm [[REG3:w[0-9]+]], eq +; CHECK-DAG: csetm [[REG4:w[0-9]+]], eq +; CHECK-DAG: csinv {{.*}}, [[REG1]], wzr, vc +; CHECK-DAG: csinv {{.*}}, [[REG2]], wzr, vc +; CHECK-DAG: csinv {{.*}}, [[REG3]], wzr, vc +; CHECK-DAG: csinv {{.*}}, [[REG4]], wzr, vc define <4 x i1> @test_fcmp_ueq(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp ueq <4 x half> %a, %b ret <4 x i1> %1 @@ -319,10 +319,10 @@ define <4 x i1> @test_fcmp_ueq(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, hi -; CHECK-DAG: csel {{.*}}, wzr, hi -; CHECK-DAG: csel {{.*}}, wzr, hi -; CHECK-DAG: csel {{.*}}, wzr, hi +; CHECK-DAG: csetm {{.*}}, hi +; CHECK-DAG: csetm {{.*}}, hi +; CHECK-DAG: csetm {{.*}}, hi +; CHECK-DAG: csetm {{.*}}, hi define <4 x i1> @test_fcmp_ugt(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp ugt <4 x half> %a, %b ret <4 x i1> %1 @@ -338,10 +338,10 @@ define <4 x i1> @test_fcmp_ugt(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, pl -; CHECK-DAG: csel {{.*}}, wzr, pl -; CHECK-DAG: csel {{.*}}, wzr, pl -; CHECK-DAG: csel {{.*}}, wzr, pl +; CHECK-DAG: csetm {{.*}}, pl +; CHECK-DAG: csetm {{.*}}, pl +; CHECK-DAG: csetm {{.*}}, pl +; CHECK-DAG: csetm {{.*}}, pl define <4 x i1> @test_fcmp_uge(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp uge <4 x half> %a, %b ret <4 x i1> %1 @@ -357,10 +357,10 @@ define <4 x i1> @test_fcmp_uge(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, lt -; CHECK-DAG: csel {{.*}}, wzr, lt -; CHECK-DAG: csel {{.*}}, wzr, lt -; CHECK-DAG: csel {{.*}}, wzr, lt +; CHECK-DAG: csetm {{.*}}, lt +; CHECK-DAG: csetm {{.*}}, lt +; CHECK-DAG: csetm {{.*}}, lt +; CHECK-DAG: csetm {{.*}}, lt define <4 x i1> @test_fcmp_ult(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp ult <4 x half> %a, %b ret <4 x i1> %1 @@ -376,10 +376,10 @@ define <4 x i1> @test_fcmp_ult(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, le -; CHECK-DAG: csel {{.*}}, wzr, le -; CHECK-DAG: csel {{.*}}, wzr, le -; CHECK-DAG: csel {{.*}}, wzr, le +; CHECK-DAG: csetm {{.*}}, le +; CHECK-DAG: csetm {{.*}}, le +; CHECK-DAG: csetm {{.*}}, le +; CHECK-DAG: csetm {{.*}}, le define <4 x i1> @test_fcmp_ule(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp ule <4 x half> %a, %b ret <4 x i1> %1 @@ -395,10 +395,10 @@ define <4 x i1> @test_fcmp_ule(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, vs -; CHECK-DAG: csel {{.*}}, wzr, vs -; CHECK-DAG: csel {{.*}}, wzr, vs -; CHECK-DAG: csel {{.*}}, wzr, vs +; CHECK-DAG: csetm {{.*}}, vs +; CHECK-DAG: csetm {{.*}}, vs +; CHECK-DAG: csetm {{.*}}, vs +; CHECK-DAG: csetm {{.*}}, vs define <4 x i1> @test_fcmp_uno(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp uno <4 x half> %a, %b ret <4 x i1> %1 @@ -414,14 +414,15 @@ define <4 x i1> @test_fcmp_uno(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, mi -; CHECK-DAG: csel {{.*}}, wzr, mi -; CHECK-DAG: csel {{.*}}, wzr, mi -; CHECK-DAG: csel {{.*}}, wzr, mi -; CHECK-DAG: csel {{.*}}, gt -; CHECK-DAG: csel {{.*}}, gt -; CHECK-DAG: csel {{.*}}, gt -; CHECK-DAG: csel {{.*}}, gt +; CHECK-DAG: csetm [[REG1:w[0-9]+]], mi +; CHECK-DAG: csetm [[REG2:w[0-9]+]], mi +; CHECK-DAG: csetm [[REG3:w[0-9]+]], mi +; CHECK-DAG: csetm [[REG4:w[0-9]+]], mi +; CHECK-DAG: csinv {{.*}}, [[REG1]], wzr, le +; CHECK-DAG: csinv {{.*}}, [[REG2]], wzr, le +; CHECK-DAG: csinv {{.*}}, [[REG3]], wzr, le +; CHECK-DAG: csinv {{.*}}, [[REG4]], wzr, le + define <4 x i1> @test_fcmp_one(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp one <4 x half> %a, %b ret <4 x i1> %1 @@ -437,10 +438,10 @@ define <4 x i1> @test_fcmp_one(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, eq -; CHECK-DAG: csel {{.*}}, wzr, eq -; CHECK-DAG: csel {{.*}}, wzr, eq -; CHECK-DAG: csel {{.*}}, wzr, eq +; CHECK-DAG: csetm {{.*}}, eq +; CHECK-DAG: csetm {{.*}}, eq +; CHECK-DAG: csetm {{.*}}, eq +; CHECK-DAG: csetm {{.*}}, eq define <4 x i1> @test_fcmp_oeq(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp oeq <4 x half> %a, %b ret <4 x i1> %1 @@ -456,10 +457,10 @@ define <4 x i1> @test_fcmp_oeq(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, gt -; CHECK-DAG: csel {{.*}}, wzr, gt -; CHECK-DAG: csel {{.*}}, wzr, gt -; CHECK-DAG: csel {{.*}}, wzr, gt +; CHECK-DAG: csetm {{.*}}, gt +; CHECK-DAG: csetm {{.*}}, gt +; CHECK-DAG: csetm {{.*}}, gt +; CHECK-DAG: csetm {{.*}}, gt define <4 x i1> @test_fcmp_ogt(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp ogt <4 x half> %a, %b ret <4 x i1> %1 @@ -475,10 +476,10 @@ define <4 x i1> @test_fcmp_ogt(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, ge -; CHECK-DAG: csel {{.*}}, wzr, ge -; CHECK-DAG: csel {{.*}}, wzr, ge -; CHECK-DAG: csel {{.*}}, wzr, ge +; CHECK-DAG: csetm {{.*}}, ge +; CHECK-DAG: csetm {{.*}}, ge +; CHECK-DAG: csetm {{.*}}, ge +; CHECK-DAG: csetm {{.*}}, ge define <4 x i1> @test_fcmp_oge(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp oge <4 x half> %a, %b ret <4 x i1> %1 @@ -494,10 +495,10 @@ define <4 x i1> @test_fcmp_oge(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, mi -; CHECK-DAG: csel {{.*}}, wzr, mi -; CHECK-DAG: csel {{.*}}, wzr, mi -; CHECK-DAG: csel {{.*}}, wzr, mi +; CHECK-DAG: csetm {{.*}}, mi +; CHECK-DAG: csetm {{.*}}, mi +; CHECK-DAG: csetm {{.*}}, mi +; CHECK-DAG: csetm {{.*}}, mi define <4 x i1> @test_fcmp_olt(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp olt <4 x half> %a, %b ret <4 x i1> %1 @@ -513,10 +514,10 @@ define <4 x i1> @test_fcmp_olt(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, ls -; CHECK-DAG: csel {{.*}}, wzr, ls -; CHECK-DAG: csel {{.*}}, wzr, ls -; CHECK-DAG: csel {{.*}}, wzr, ls +; CHECK-DAG: csetm {{.*}}, ls +; CHECK-DAG: csetm {{.*}}, ls +; CHECK-DAG: csetm {{.*}}, ls +; CHECK-DAG: csetm {{.*}}, ls define <4 x i1> @test_fcmp_ole(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp ole <4 x half> %a, %b ret <4 x i1> %1 @@ -532,10 +533,10 @@ define <4 x i1> @test_fcmp_ole(<4 x half> %a, <4 x half> %b) #0 { ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt ; CHECK-DAG: fcvt -; CHECK-DAG: csel {{.*}}, wzr, vc -; CHECK-DAG: csel {{.*}}, wzr, vc -; CHECK-DAG: csel {{.*}}, wzr, vc -; CHECK-DAG: csel {{.*}}, wzr, vc +; CHECK-DAG: csetm {{.*}}, vc +; CHECK-DAG: csetm {{.*}}, vc +; CHECK-DAG: csetm {{.*}}, vc +; CHECK-DAG: csetm {{.*}}, vc define <4 x i1> @test_fcmp_ord(<4 x half> %a, <4 x half> %b) #0 { %1 = fcmp ord <4 x half> %a, %b ret <4 x i1> %1 |