brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 33ea749 Raw
98 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=aarch64-none-linux-gnu -mattr=+sve | FileCheck %s3 4define <2 x i64> @test_mul_add_2x64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {5; CHECK-LABEL: test_mul_add_2x64:6; CHECK:       // %bb.0:7; CHECK-NEXT:    ptrue p0.d, vl28; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z09; CHECK-NEXT:    // kill: def $q2 killed $q2 def $z210; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z111; CHECK-NEXT:    mla z0.d, p0/m, z1.d, z2.d12; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z013; CHECK-NEXT:    ret14  %mul = mul <2 x i64> %b, %c15  %add = add <2 x i64> %a, %mul16  ret <2 x i64> %add17}18 19define <1 x i64> @test_mul_add_1x64(<1 x i64> %a, <1 x i64> %b, <1 x i64> %c) {20; CHECK-LABEL: test_mul_add_1x64:21; CHECK:       // %bb.0:22; CHECK-NEXT:    ptrue p0.d, vl123; CHECK-NEXT:    // kill: def $d0 killed $d0 def $z024; CHECK-NEXT:    // kill: def $d2 killed $d2 def $z225; CHECK-NEXT:    // kill: def $d1 killed $d1 def $z126; CHECK-NEXT:    mla z0.d, p0/m, z1.d, z2.d27; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $z028; CHECK-NEXT:    ret29  %mul = mul <1 x i64> %b, %c30  %add = add <1 x i64> %mul, %a31  ret <1 x i64> %add32}33 34define <2 x i64> @test_mul_sub_2x64(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {35; CHECK-LABEL: test_mul_sub_2x64:36; CHECK:       // %bb.0:37; CHECK-NEXT:    ptrue p0.d, vl238; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z039; CHECK-NEXT:    // kill: def $q2 killed $q2 def $z240; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z141; CHECK-NEXT:    mls z0.d, p0/m, z1.d, z2.d42; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z043; CHECK-NEXT:    ret44  %mul = mul <2 x i64> %b, %c45  %sub = sub <2 x i64> %a, %mul46  ret <2 x i64> %sub47}48 49define <2 x i64> @test_mul_sub_2x64_2(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c, <2 x i64> %d) {50; CHECK-LABEL: test_mul_sub_2x64_2:51; CHECK:       // %bb.0:52; CHECK-NEXT:    ptrue p0.d, vl253; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z054; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z155; CHECK-NEXT:    // kill: def $q2 killed $q2 def $z256; CHECK-NEXT:    // kill: def $q3 killed $q3 def $z357; CHECK-NEXT:    sdiv z0.d, p0/m, z0.d, z1.d58; CHECK-NEXT:    mul z2.d, p0/m, z2.d, z3.d59; CHECK-NEXT:    sub v0.2d, v2.2d, v0.2d60; CHECK-NEXT:    ret61  %div = sdiv <2 x i64> %a, %b62  %mul = mul <2 x i64> %c, %d63  %sub = sub <2 x i64> %mul, %div64  ret <2 x i64> %sub65}66 67define <2 x i64> @test_mul_sub_2x64_3(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c, <2 x i64> %d) {68; CHECK-LABEL: test_mul_sub_2x64_3:69; CHECK:       // %bb.0:70; CHECK-NEXT:    ptrue p0.d, vl271; CHECK-NEXT:    // kill: def $q0 killed $q0 def $z072; CHECK-NEXT:    // kill: def $q1 killed $q1 def $z173; CHECK-NEXT:    // kill: def $q3 killed $q3 def $z374; CHECK-NEXT:    // kill: def $q2 killed $q2 def $z275; CHECK-NEXT:    sdiv z0.d, p0/m, z0.d, z1.d76; CHECK-NEXT:    mls z0.d, p0/m, z2.d, z3.d77; CHECK-NEXT:    // kill: def $q0 killed $q0 killed $z078; CHECK-NEXT:    ret79  %div = sdiv <2 x i64> %a, %b80  %mul = mul <2 x i64> %c, %d81  %sub = sub <2 x i64> %div, %mul82  ret <2 x i64> %sub83}84 85define <1 x i64> @test_mul_sub_1x64(<1 x i64> %a, <1 x i64> %b, <1 x i64> %c) {86; CHECK-LABEL: test_mul_sub_1x64:87; CHECK:       // %bb.0:88; CHECK-NEXT:    ptrue p0.d, vl189; CHECK-NEXT:    // kill: def $d1 killed $d1 def $z190; CHECK-NEXT:    // kill: def $d2 killed $d2 def $z291; CHECK-NEXT:    mul z1.d, p0/m, z1.d, z2.d92; CHECK-NEXT:    sub d0, d1, d093; CHECK-NEXT:    ret94  %mul = mul <1 x i64> %b, %c95  %sub = sub <1 x i64> %mul, %a96  ret <1 x i64> %sub97}98