126 lines · plain
1; RUN: llc < %s -mtriple=s390x-linux-gnu \2; RUN: | FileCheck %s --check-prefixes=CHECK,DEFAULT3; RUN: llc < %s -mtriple=s390x-linux-gnu -mattr=soft-float \4; RUN: | FileCheck %s --check-prefixes=CHECK,SOFT-FLOAT5; RUN: llc < %s -mtriple=s390x-linux-gnu -mattr=-soft-float \6; RUN: | FileCheck %s --check-prefixes=CHECK,NO-SOFT-FL7; RUN: llc < %s -mtriple=s390x-linux-gnu -mattr=-vector \8; RUN: | FileCheck %s --check-prefixes=CHECK,NO-VECTOR9;10; Test per function attributes and command line arguments that override them.11 12attributes #1 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="false" }13define double @fun1(ptr %A) #1 {14; CHECK-LABEL: fun1:15; DEFAULT: ld %f0, 0(%r2)16; SOFT-FLOAT: lg %r2, 0(%r2)17; NO-SOFT-FL: ld %f0, 0(%r2)18; NO-VECTOR: ld %f0, 0(%r2)19; CHECK-NEXT: br %r1420entry:21 %0 = load double, ptr %A22 ret double %023}24 25attributes #2 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="true" }26define double @fun2(ptr %A) #2 {27; CHECK-LABEL: fun2:28; DEFAULT: lg %r2, 0(%r2)29; SOFT-FLOAT: lg %r2, 0(%r2)30; NO-SOFT-FL: lg %r2, 0(%r2)31; NO-VECTOR: lg %r2, 0(%r2)32; CHECK-NEXT: br %r1433entry:34 %0 = load double, ptr %A35 ret double %036}37 38attributes #3 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="false" }39define <2 x double> @fun3(ptr %A) #3 {40; CHECK-LABEL: fun3:41; DEFAULT: vl %v24, 0(%r2), 342; SOFT-FLOAT: lg %r0, 0(%r2)43; SOFT-FLOAT-NEXT: lg %r3, 8(%r2)44; SOFT-FLOAT-NEXT: lgr %r2, %r045; NO-SOFT-FL: vl %v24, 0(%r2), 346; NO-VECTOR: ld %f0, 0(%r2)47; NO-VECTOR-NEXT: ld %f2, 8(%r2)48; CHECK-NEXT: br %r1449entry:50 %0 = load <2 x double>, ptr %A51 ret <2 x double> %052}53 54attributes #4 = { "target-cpu"="z14" "target-features"="+vector" "use-soft-float"="true" }55define <2 x double> @fun4(ptr %A) #4 {56; CHECK-LABEL: fun4:57; DEFAULT: lg %r0, 0(%r2)58; DEFAULT-NEXT: lg %r3, 8(%r2)59; DEFAULT-NEXT: lgr %r2, %r060; SOFT-FLOAT: lg %r0, 0(%r2)61; SOFT-FLOAT-NEXT: lg %r3, 8(%r2)62; SOFT-FLOAT-NEXT: lgr %r2, %r063; NO-SOFT-FL: lg %r0, 0(%r2)64; NO-SOFT-FL-NEXT: lg %r3, 8(%r2)65; NO-SOFT-FL-NEXT: lgr %r2, %r066; NO-VECTOR: lg %r0, 0(%r2)67; NO-VECTOR-NEXT: lg %r3, 8(%r2)68; NO-VECTOR-NEXT: lgr %r2, %r069; CHECK-NEXT: br %r1470entry:71 %0 = load <2 x double>, ptr %A72 ret <2 x double> %073}74 75attributes #5 = { "target-cpu"="z14" "target-features"="-vector" "use-soft-float"="false" }76define <2 x double> @fun5(ptr %A) #5 {77; CHECK-LABEL: fun5:78; DEFAULT: ld %f0, 0(%r2)79; DEFAULT-NEXT: ld %f2, 8(%r2)80; SOFT-FLOAT: lg %r0, 0(%r2)81; SOFT-FLOAT-NEXT: lg %r3, 8(%r2)82; SOFT-FLOAT-NEXT: lgr %r2, %r083; NO-SOFT-FL: ld %f0, 0(%r2)84; NO-SOFT-FL-NEXT: ld %f2, 8(%r2)85; NO-VECTOR: ld %f0, 0(%r2)86; NO-VECTOR-NEXT: ld %f2, 8(%r2)87; CHECK-NEXT: br %r1488entry:89 %0 = load <2 x double>, ptr %A90 ret <2 x double> %091}92 93attributes #6 = { "target-cpu"="zEC12" "use-soft-float"="false" }94define <2 x double> @fun6(ptr %A) #6 {95; CHECK-LABEL: fun6:96; DEFAULT: ld %f0, 0(%r2)97; DEFAULT-NEXT: ld %f2, 8(%r2)98; SOFT-FLOAT: lg %r0, 0(%r2)99; SOFT-FLOAT-NEXT: lg %r3, 8(%r2)100; SOFT-FLOAT-NEXT: lgr %r2, %r0101; NO-SOFT-FL: ld %f0, 0(%r2)102; NO-SOFT-FL-NEXT: ld %f2, 8(%r2)103; NO-VECTOR: ld %f0, 0(%r2)104; NO-VECTOR-NEXT: ld %f2, 8(%r2)105; CHECK-NEXT: br %r14106entry:107 %0 = load <2 x double>, ptr %A108 ret <2 x double> %0109}110 111attributes #7 = { "target-cpu"="zEC12" "target-features"="+vector" "use-soft-float"="false" }112define <2 x double> @fun7(ptr %A) #7 {113; CHECK-LABEL: fun7:114; DEFAULT: vl %v24, 0(%r2), 3115; SOFT-FLOAT: lg %r0, 0(%r2)116; SOFT-FLOAT-NEXT: lg %r3, 8(%r2)117; SOFT-FLOAT-NEXT: lgr %r2, %r0118; NO-SOFT-FL: vl %v24, 0(%r2), 3119; NO-VECTOR: ld %f0, 0(%r2)120; NO-VECTOR-NEXT: ld %f2, 8(%r2)121; CHECK-NEXT: br %r14122entry:123 %0 = load <2 x double>, ptr %A124 ret <2 x double> %0125}126