[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / MIR / NVPTX / floating-point-immediate-operands.mir
blob58e2e644b000febd2641435b4474f406e4074524
1 # RUN: llc -march=nvptx -mcpu=sm_20 -run-pass none -o - %s | FileCheck %s
2 # This test ensures that the MIR parser parses floating point constant operands
3 # correctly.
5 --- |
7   define float @test(float %k, i32 %i) {
8   entry:
9     %0 = fpext float %k to double
10     %1 = fadd double %0, 3.250000e+00
11     %2 = fptrunc double %1 to float
12     %3 = sitofp i32 %i to float
13     %4 = fadd float %3, 6.250000e+00
14     %5 = fmul float %4, %2
15     ret float %5
16   }
18   define float @test2(float %k, i32 %i) {
19   entry:
20     %0 = fpext float %k to double
21     %1 = fadd double %0, 0x7FF8000000000000
22     %2 = fptrunc double %1 to float
23     %3 = sitofp i32 %i to float
24     %4 = fadd float %3, 0x7FF8000000000000
25     %5 = fmul float %4, %2
26     ret float %5
27   }
29 ...
30 ---
31 name:            test
32 registers:
33   - { id: 0, class: float32regs }
34   - { id: 1, class: float64regs }
35   - { id: 2, class: int32regs }
36   - { id: 3, class: float64regs }
37   - { id: 4, class: float32regs }
38   - { id: 5, class: float32regs }
39   - { id: 6, class: float32regs }
40   - { id: 7, class: float32regs }
41 body: |
42   bb.0.entry:
43     %0 = LD_f32_avar 0, 4, 1, 2, 32, &test_param_0
44     %1 = CVT_f64_f32 %0, 0
45     %2 = LD_i32_avar 0, 4, 1, 0, 32, &test_param_1
46   ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 3.250000e+00
47     %3 = FADD_rnf64ri %1, double 3.250000e+00
48     %4 = CVT_f32_f64 %3, 5
49     %5 = CVT_f32_s32 %2, 5
50   ; CHECK: %6:float32regs = FADD_rnf32ri %5, float 6.250000e+00
51     %6 = FADD_rnf32ri %5, float 6.250000e+00
52     %7 = FMUL_rnf32rr %6, %4
53     StoreRetvalF32 %7, 0
54     Return
55 ...
56 ---
57 name:            test2
58 registers:
59   - { id: 0, class: float32regs }
60   - { id: 1, class: float64regs }
61   - { id: 2, class: int32regs }
62   - { id: 3, class: float64regs }
63   - { id: 4, class: float32regs }
64   - { id: 5, class: float32regs }
65   - { id: 6, class: float32regs }
66   - { id: 7, class: float32regs }
67 body: |
68   bb.0.entry:
69     %0 = LD_f32_avar 0, 4, 1, 2, 32, &test2_param_0
70     %1 = CVT_f64_f32 %0, 0
71     %2 = LD_i32_avar 0, 4, 1, 0, 32, &test2_param_1
72   ; CHECK: %3:float64regs = FADD_rnf64ri %1, double 0x7FF8000000000000
73     %3 = FADD_rnf64ri %1, double 0x7FF8000000000000
74     %4 = CVT_f32_f64 %3, 5
75     %5 = CVT_f32_s32 %2, 5
76   ; CHECK: %6:float32regs = FADD_rnf32ri %5, float 0x7FF8000000000000
77     %6 = FADD_rnf32ri %5, float 0x7FF8000000000000
78     %7 = FMUL_rnf32rr %6, %4
79     StoreRetvalF32 %7, 0
80     Return
81 ...