146 lines · plain
1# RUN: llc -mtriple=x86_64 -run-pass none -o - %s | FileCheck %s2# This test ensures that the MIR parser parses constant pool constants and3# constant pool operands correctly.4 5--- |6 7 define double @test(double %a, float %b) {8 entry:9 %c = fadd double %a, 3.250000e+0010 %d = fadd float %b, 6.250000e+0011 %e = fpext float %d to double12 %f = fmul double %c, %e13 ret double %f14 }15 16 define double @test2(double %a, float %b) {17 entry:18 %c = fadd double %a, 3.250000e+0019 %d = fadd float %b, 6.250000e+0020 %e = fpext float %d to double21 %f = fmul double %c, %e22 ret double %f23 }24 25 define double @test3(double %a, float %b) {26 entry:27 %c = fadd double %a, 3.250000e+0028 %d = fadd float %b, 6.250000e+0029 %e = fpext float %d to double30 %f = fmul double %c, %e31 ret double %f32 }33 34 define double @test4(double %a, float %b) {35 entry:36 %c = fadd double %a, 3.250000e+0037 %d = fadd float %b, 6.250000e+0038 %e = fpext float %d to double39 %f = fmul double %c, %e40 ret double %f41 }42...43---44# CHECK: name: test45# CHECK: constants:46# CHECK-NEXT: - id: 047# CHECK-NEXT: value: 'double 3.250000e+00'48# CHECK-NEXT: alignment: 849# CHECK-NEXT: isTargetSpecific: false50# CHECK-NEXT: - id: 151# CHECK-NEXT: value: 'float 6.250000e+00'52# CHECK-NEXT: alignment: 453# CHECK-NEXT: isTargetSpecific: false54name: test55constants:56 - id: 057 value: 'double 3.250000e+00'58 alignment: 859 - id: 160 value: 'float 6.250000e+00'61 alignment: 462body: |63 bb.0.entry:64 ; CHECK: $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.0, $noreg, implicit $mxcsr65 ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.1, $noreg, implicit $mxcsr66 $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.0, _, implicit $mxcsr67 $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.1, _, implicit $mxcsr68 $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr69 $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr70 RET64 $xmm071...72---73# Verify that alignment can be inferred:74# CHECK: name: test275# CHECK: constants:76# CHECK-NEXT: - id: 077# CHECK-NEXT: value: 'double 3.250000e+00'78# CHECK-NEXT: alignment: 879# CHECK-NEXT: isTargetSpecific: false80# CHECK-NEXT: - id: 181# CHECK-NEXT: value: 'float 6.250000e+00'82# CHECK-NEXT: alignment: 483# CHECK-NEXT: isTargetSpecific: false84name: test285constants:86 - id: 087 value: 'double 3.250000e+00'88 - id: 189 value: 'float 6.250000e+00'90body: |91 bb.0.entry:92 $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.0, _, implicit $mxcsr93 $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.1, _, implicit $mxcsr94 $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr95 $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr96 RET64 $xmm097...98---99# Verify that the non-standard alignments are respected:100# CHECK: name: test3101# CHECK: constants:102# CHECK-NEXT: - id: 0103# CHECK-NEXT: value: 'double 3.250000e+00'104# CHECK-NEXT: alignment: 128105# CHECK-NEXT: isTargetSpecific: false106# CHECK-NEXT: - id: 1107# CHECK-NEXT: value: 'float 6.250000e+00'108# CHECK-NEXT: alignment: 1109# CHECK-NEXT: isTargetSpecific: false110name: test3111constants:112 - id: 0113 value: 'double 3.250000e+00'114 alignment: 128115 - id: 1116 value: 'float 6.250000e+00'117 alignment: 1118body: |119 bb.0.entry:120 ; CHECK: $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.0, $noreg, implicit $mxcsr121 ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.1, $noreg, implicit $mxcsr122 $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.0, _, implicit $mxcsr123 $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.1, _, implicit $mxcsr124 $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr125 $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr126 RET64 $xmm0127...128---129# CHECK: name: test4130name: test4131constants:132 - id: 0133 value: 'double 3.250000e+00'134 - id: 1135 value: 'float 6.250000e+00'136body: |137 bb.0.entry:138 ; CHECK: $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.1 - 12, $noreg, implicit $mxcsr139 ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.0 + 8, $noreg, implicit $mxcsr140 $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.1 - 12, _, implicit $mxcsr141 $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.0 + 8, _, implicit $mxcsr142 $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr143 $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr144 RET64 $xmm0145...146