xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/msa/inline-asm.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; A basic inline assembly test
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker@v4i32_r  = global <4 x i32> zeroinitializer, align 16
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine void @test1() nounwind {
8*9880d681SAndroid Build Coastguard Workerentry:
9*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: test1:
10*9880d681SAndroid Build Coastguard Worker  %0 = call <4 x i32> asm "ldi.w ${0:w}, 1", "=f"()
11*9880d681SAndroid Build Coastguard Worker  ; CHECK: ldi.w $w{{[1-3]?[0-9]}}, 1
12*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %0, <4 x i32>* @v4i32_r
13*9880d681SAndroid Build Coastguard Worker  ret void
14*9880d681SAndroid Build Coastguard Worker}
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerdefine void @test2() nounwind {
17*9880d681SAndroid Build Coastguard Workerentry:
18*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: test2:
19*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @v4i32_r
20*9880d681SAndroid Build Coastguard Worker  %1 = call <4 x i32> asm "addvi.w ${0:w}, ${1:w}, 1", "=f,f"(<4 x i32> %0)
21*9880d681SAndroid Build Coastguard Worker  ; CHECK: addvi.w $w{{[1-3]?[0-9]}}, $w{{[1-3]?[0-9]}}, 1
22*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %1, <4 x i32>* @v4i32_r
23*9880d681SAndroid Build Coastguard Worker  ret void
24*9880d681SAndroid Build Coastguard Worker}
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerdefine void @test3() nounwind {
27*9880d681SAndroid Build Coastguard Workerentry:
28*9880d681SAndroid Build Coastguard Worker  ; CHECK-LABEL: test3:
29*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @v4i32_r
30*9880d681SAndroid Build Coastguard Worker  %1 = call <4 x i32> asm sideeffect "addvi.w ${0:w}, ${1:w}, 1", "=f,f,~{$w0}"(<4 x i32> %0)
31*9880d681SAndroid Build Coastguard Worker  ; CHECK: addvi.w $w{{([1-9]|[1-3][0-9])}}, $w{{([1-9]|[1-3][0-9])}}, 1
32*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %1, <4 x i32>* @v4i32_r
33*9880d681SAndroid Build Coastguard Worker  ret void
34*9880d681SAndroid Build Coastguard Worker}
35